package com.dragon.repository.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 生产表
 * </p>
 *
 * @author sy
 * @since 2023-06-25
 */
@Getter
@Setter
@TableName("dragon_produce")
public class  Produce implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 合同id
     */
    private Integer contractId;

    /**
     * 用户id
     */
    private Integer adminId;

    /**
     * 部门id
     */
    private Integer departmentId;

    /**
     * 生产单号
     */
    private String number;

    /**
     * 生产的名称
     */
    @NotNull(message = "生产名不能为空")
    private String name;

    /**
     * 生产数量
     */
    private Long quantity;


    /**
     * 收货状态
     */
    private Integer deliverStatus;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date updateTime;

    /**
     * 生产截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @NotNull(message = "生产截止时间不能为空")
    private Date endTime;

    /**
     * 交货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date deliveryTime;

    /**
     * 生产状态：0.待生产1.生产中2.生产完成
     */
    private Integer type;

    /**
     * 审核状态：0待审核 1审核通过 2审核不通过 3作废 4删除
     */
    private Integer status;

    /**
     * 备注
     */
    private String remark;


    /**
     * 生产负责人id
     */
    private Integer responsibleId;

//    /**
//     * 工作流json
//     */
//    @TableField(exist = false)
//    private List<WorkflowJson> workflowJsonList;

    /**
     * 项目名称
     */
    @TableField(exist = false)
    private String contractName;

    /**
     * 负责人名称
     */
    @TableField(exist = false)
    private String responsibleName;

    /**
     * 申请人名称
     */
    @TableField(exist = false)
    private String applicantName;

    /**
     * 附件
     */
    @TableField(exist = false)
    private List<OtherFile> otherFileList;

    /**
     * 合同地址
     */
    @TableField(exist = false)
    private String contractAddress;

    /**
     * 客户id
     */
    @TableField(exist = false)
    private Integer customerId;

    /**
     * 免审操作：0，不免审，1免审
     */
    @TableField(exist = false)
    private Integer exempt;

    /**
     * 生产产品信息
     */
    @TableField(exist = false)
    private List<ProduceProducts> produceProducts;

    /**
     * 客户名称
     */
    @TableField(exist = false)
    private String customerName;

    /**
     * 0生产单 1生产单(重做) 2生产单维修
     */
    private Integer source;

    /**
     * 排产状态 0未排产 1部分排产 2排产完成
     */
    public Integer schedulingStatus;

    /**
     * 退货单id
     */
    private Integer rejectedId;

    /**
     * 完成状态 0未完成，1部分完成 2全部完成
     */
    private Integer finishedStatus;

    /**
     * 签订时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date orderTime;


    /**
     * 合同编码
     */
    @TableField(exist = false)
    private String contractCode;
}
